package chapter11;

import org.junit.Test;

import java.util.*;
import java.util.function.IntPredicate;

/**
 * @author : DuJiabao
 * @Date : 2021/2/19 22:05
 * @Project : thinking-in-java
 * @File : null.java
 * @Desc :
 */
public class PriorityQueueTest {
  @Test
  public void test() {
    List<Integer> input = Arrays.asList(54, 3, 4, 5, 5, 45, 7, 5, 8);
    // 从小到大
    PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();
    priorityQueue.addAll(input);
    System.out.println(priorityQueue);  // 不一定已经排好序
    while (!priorityQueue.isEmpty()) {  // 但输出的，一定是排好序的
      System.out.println(priorityQueue.poll());
    }

    priorityQueue = new PriorityQueue<>(Collections.reverseOrder());  // 放一个反转自然顺序的Comparator进去
    priorityQueue.addAll(input);
    System.out.println(priorityQueue);  // 不一定已经排好序
    while (!priorityQueue.isEmpty()) {  // 但输出的，一定是排好序的
      System.out.println(priorityQueue.poll());
    }
  }

  @Test
  public void test2() {
    PriorityQueue<String> priorityQueue = new PriorityQueue<>(new Comparator<String>(){
      @Override
      public int compare(String o1, String o2) {
        return o1.length()- o2.length();  // 比较字符串长度
      }
    });
    priorityQueue.offer("amy");
    priorityQueue.offer("amyfaf");
    priorityQueue.offer("fadf");
    priorityQueue.offer("fadfa");
    while (!priorityQueue.isEmpty()) {  // 但输出的，一定是排好序的
      System.out.println(priorityQueue.poll());
    }
  }



}














